perm filename JCLDAT[2,LCS] blob
sn#153748 filedate 1975-04-04 generic text, type T, neo UTF8
******** JCL FOR IBM360(NOT! UPDATED.) AND TEST DATA FOR MUSIC5 *******
//PASS1 EXEC FORTGLG )0 ¬
//LKED.SYSIN DD *
*/
//GO.FT02F001 DD DSNAME=&&TEMP2,DISP=(NEW,PASS), X
// UNIT=DISK,SPACE=(CYL,(30,1)),VOLUME=REF=SCRPACK
//GO.SYSIN DD *
COMMENT:TEST SCORE TO CHECK MUSIC V PROGRAMS AND UNIT GENERATORS=
COMMENT:USE DUMMY CONVT PROVIDED WITH PASS 2 AND DEBUG SAMOUT=
COMMENT:INSTRUMENT DEFINITIONS=
COMMENT:OUTPUT BOX=INS 0 1=OUT P5 B1=END=
COMMENT:OSCILLATOR=INS 0 2=OSC P5 P6 B2 F1 P30=OUT B2 B1=END=
COMMENT:ADD TWO GENERATOR=INS 0 3=AD2 P5 P6 B2=OUT B2 B1=END=
COMMENT:RANDOM GENERATOR=INS 0 4=RAN P5 P6 B2 P7 P30 P29=OUT B2 B1=END=
COMMENT:ENVELOPE=INS 0 5=ENV P5 F2 B2 P6 P7 P8 P30=OUT B2 B1=END=
COMMENT:STEREO OUTPUT BOX=INS 0 6=STR V1 V2 B1=END=
COMMENT:ADD THREE GENERATOR=INS 0 7=AD3 P5 P6 P7 B2=OUT B2 B1=END=
COMMENT:ADD FOUR GENERATOR=INS 0 8=AD4 P5 P6 P7 P8 B2=OUT B2 B1=END=
COMMENT:MULTIPLIER=INS 0 9=MLT P5 P6 B2=OUT B2 B1=END=
COMMENT:DUMMY INST , FILTER OMITTED=INS 0 10=OUT P5 B1=END=
COMMENT:RANDOM AND HOLD=INS 0 11=RAH P5 P6 B2 P7 P30=OUT B2 B1=END=
COMMENT:SETTING INTEGERS AND VARIABLES=
COMMENT:SAMPLING RATE 1000 HZ=SIA 0 4 1000=
COMMENT:STEREO BOX INPUTS=SV3 0 1 500 999=
COMMENT:FUNCTION DEFINITIONS=
GEN 0 3 1 0 10 10 10 10 0 -10 -10 -10 -10 0=
GEN 0 1 2 0 0 .990 127 .990 255 0 383 0 511=
GEN 0 2 3 1 1=
COMMENT:NOTE CARDS=
NOT 0.005 2 .03 1000 51.1=
NOT .04 3 .005 657 343=
NOT 0 1 .003 777=
NOT .05 4 .03 1000 128 512=
NOT .09 5 .032 1000 16 8 16=
COMMENT:TO SET MONO=SI3 .16 8 0=
NOT .13 5 .010 1000 32 64 32=
COMMENT:TO SET STEREO=SI3 .14 8 1=
NOT .15 6 .005=
NOT .16 7 .005 600 200 301=
NOT .18 9 .005 50 20=
NOT .17 8 .005 600 150 60 301=
NOT .22 11 .03 1000 128=
TER .26=
*/
//PASS2 EXEC FORTGLG
//LKED.SYSIN DD *
*/
//GO.FT02F001 DD DSNAME=&&TEMP2,DISP=(OLD,DELETE)
//GO.FT03F001 DD DSNAME=&&TEMP3,DISP=(NEW,PASS), X
// UNIT=DISK,SPACE=(CYL,(30,1)),VOLUME=REF=SCRPACK
*/
//PASS3 EXEC FORTGLG
//LKED.SYSIN DD *
*/
//GO.FT03F001 DD DSNAME=&&TEMP3,DISP=(OLD,DELETE)
*/
********** FOLLOWING IS IBM360 SAMPLE GENERATING ROUTINE (NOT DEBUGGED!)
//SAMGEN JOB (Y077MUS,427,1,2),SAMGEN,MSGLEVEL=1
// EXEC ASMGC,PARM.ASM=(DECK,LOAD,FULLXREF,ESD)
//ASM.SYSPUNCH DD DSNAME=E404.SAMGEN,SPACE=(TRK,(10,2),RLSE),UNIT=2314,X
// DISP=(OLD,KEEP),VOLUME=SER=SYS09
//ASM.SYSIN DD *
TITLE 'SAMGEN - UNIT GENERATOR ROUTINES FOR MUSIC V'
SAMGEN CSECT DOROTHY BENDER, JULY, 1969
*
********** FORTRAN CALL FROM MAIN PROGRAM OF PASS3 *****************
*
* I(6)=IGEN
* N3 =I(IGEN)-100
* GO TO (OUT,OSC,AD2,RAN,ENV,STR,AD3,AD4,MLT,FLT,RAH,...,NEG),N3
* 1 2 3 4 5 6 7 8 9 10 11 12 13
* GO TO (293,293,293,293,293,293,293,293,293,294,293,294,293),N3
*293 CALL SAMGEN(I)
* GO TO OUT
*294 CALL FORSAM
*
* PERTINENT POINTERS IN THE I-ARRAY:
*
* I(3) - THE SUBSCRIPT IN THE I-ARRAY OF THE NOTE PARAMETERS
* FOR THE NOTE BEING PLAYED.
* I(5) - THE NUMBER OF SAMPLES TO GENERATE (NSAM)
* I(6) - THE SUBSCRIPT IN THE I-ARRAY FOR THE INSTRUMENT
* DEFINITION TABLE OF THE UNIT GENERATOR BEING
* PLAYED.
*
* INITIALIZATION PROCEDURE:
*
* IF S(I)←0 THEN
S(I)
IS AN INDEX TO THE I-ARRAY OF THE
* BEGINNING OF A FUNCTION OR A UNIT GENERATOR I-O BLOCK.
*
* IF 0←=S(I)←=262144 THEN S(I) IS THE NUMBER OF A NOTE
* PARAMETER (WHERE NOTE PARAMETER X IS LOCATED AT
* I(I(3)+X-1).
*
* IF S(I)-262144 THEN S(I)-262144 IS AN INDEX IN THE I-ARRAY
* OF A VARIABLE (WHERE VARIABLE X IS LOCATED AT
* I(X+100).
*
******** REGISTER USAGE ******************************************
*
R511 EQU 0-511 FOR OSC FUNCTION
L EQU 2-BASE OF INTAB ARRAY
I3 EQU 4-I(3)
IJ3 EQU 5-FOR INITIALIZATION TO MODIFY INST
CONS EQU 6-=F'262144'
INDEX EQU 7-THE J3 REGISTER TO MODIFY CODE
IDX EQU 8-INCREMENT FOR LOOP
NSAM EQU 9-NUMBER OF SAMPLES
N2 EQU 9-I(I(6)+1-1; END OF UNIT GEN
TYPE EQU 10 -I(I(6)) - UNIT GENERATOR TYPE
WKE EQU 10 -EVEN WORK REGISTER
WK EQU 11 -ODD WORK REGISTER
N1 EQU 12 -I(6)+2; BASE OF UNIT GENERATOR
J3 EQU 12 -MAJOR LOOP INDEX FOR FUNCT'S
I EQU 14 -BASE OF I-ARRAY
*
RN1 EQU 4-FOR RAN; I(L5)
RN3 EQU 5-FOR RAN; I(L6)
RN2 EQU 6-FOR RAN; WORK
SUM EQU 7-FOR RAN,OSC; SUM (0-511)
*
SUME EQU 14 -FOR ENV
*
RN EQU 6-FOR RAH
*
IL1 EQU 1-IN OSC:AMP
IL2 EQU 2-IN OSC:FREQ
IL3 EQU 3-IN OSC:OUTPUT
IL4 EQU 4-IN OSC:FUNCTION
IL5 EQU 5-IN OSC:SUM
IL6 EQU 6
IL7 EQU 7
*
************** INITIALIZATION *****************************************
*
USING *,15 -BASE REGISTER
SAVE (14,12),,*-SAVE CALLER'S REGISTERS
L I,0(1) -SET UP BASE OF I
LA I,0(I) -GET RID OF HIGH-ORDER BIT
LA IDX,4
SR I,IDX
*
L I3,12(I) -SAVE I(3);NOTE PARAMETERS SUB
*
L N1,24(I) -I(6)
SLL N1,2
AR N1,I BASE FOR UNIT GENERATOR DES
*
L TYPE,0(N1)-I(I(6))
LA WK,100
SR TYPE,WK
SLL TYPE,2 TYPE OF UNIT GENERATOR
*
L N2,4(N1) -(I(I(6)+1)-1
SLL N2,2
AR N2,I END TEST FOR UNIT GENERATOR DES
*
LA N1,8(N1) -I(6)+2 - START OF UNIT GEN DES
*
SR L,L -INDEX FOR INTAB
*
L CONS,=F'262144'
*
L INDEX,=X'C0000000'
*
LOOP204 DS 0H
L WK,0(N1) -PICK UP I(N)
LTR WK,WK -= OR - THAN 0
BNL X201 YES
LPR WK,WK NO. MAKE IT POSITIVE
LR IJ3,INDEX INDEX (THE J3 REGISTER)
B X204
X201 SR IJ3,IJ3 INDEX TO MODIFY INSTRUCTIONS
CR WK,CONS -GREATER THAN 262144
BH X203 YES.
AR WK,I3 NO. INTAB(L)=I(WK+I(3)-1)
BCTR WK,0
B X204
X203 SR WK,CONS
X204 SLL WK,2
AR WK,I
OR WK,IJ3 -OR IN INDEX (J3 OR 0)
ST WK,INTAB(L)
LA L,4(L) -BUMP TO NEXT WHOLE IN INTAB
BXLE N1,IDX,LOOP204
*
LM IL1,IL7,INTAB -MOVE INTAB IN REGISTERS
*
L R511,=X'01FF0000' -511 IN THE LEFT HALF-WORD
*
SR J3,J3 -SET UP LOOP INDEX
*
L NSAM,20(I)-I(5)
SLL NSAM,2 NUMBER OF SAMPLES
*
* FOR ALL THE UNIT GENERATORS, THE LOOPS GO
* FROM J3 TO NSAM IN STEPS OF IDX.
*
UNITGEN B UNITGEN(TYPE) -BRANCH TO TYPE
*
B OUT
B OSC
B AD2
B RAN
B ENV
B STER
B AD3
B AD4
B MLT
B FLT
B RAH
B RETURN
B OSC
*
RETURN RETURN (14,12)
*
EJECT
************** OUTPUT BOX *********************************************
*
OUT DS 0H
*
* OUT CODE: OUT,I,O
* EQUATION: O(I)=O(I)+I(I)
*
MVC OUTE1+2(1),L1 -MODIFY INST FOR INDEXED OR NON-INDEX
OUTLOOP DS 0H
OUTE1 L WK,0(IL1,0)
A WK,0(IL2,J3)
ST WK,0(IL2,J3)
BXLE J3,IDX,OUTLOOP
B RETURN
*
************** OSCILLATOR (POSITIVE OR NEGATIVE FREQUENCY) ************
*
OSC DS 0H
*
*
* OSC CODE I1,I2,O,F,S
* EQUATIONS:
* S(I+1)=S(I)+I2(I)
* O(I)= I1(I)*F(S(I) MOD511)
* I(IL1) = AMPLITUDE
* I(IL2) = FREQUENCY (POSITIVE OR NEGATIVE)
* I(IL3) = OUTPUT
* I(IL4) = FUNCTION
* I(IL5) = SUM
* SCALING:
* I1,I1,0-16PLACES; F-31PLACES
*
MVC NOSC0+2(1),L5 -SUM INDEXED OR NON-INDEXED
MVC NOSC1+2(1),L2 -I2 INDEXED OR NON-INDEXED
MVC NOSC2+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC NOSC3+2(1),L5 -SUM INDEXED OR NON-INDEXED
NOSC0 L SUM,0(IL5,0) -COMPUTED S(I+1)
NOSCLOOP DS 0H
NOSC1 L WK,0(IL2,0) -PICK UP FREQUENCY
AR SUM,WK -SUM=SUM+FREQUENCY
LTR WK,WK -IS FREQUENCY POS OR NEG
BL FREQNEG NEGATIVE.
FREQPOS CR SUM,R511
BL NOSCB
SR SUM,R511
B FREQPOS
*
FREQNEG LTR SUM,SUM
BP NOSCB
AR SUM,R511
B FREQNEG
*
NOSCB LR WK,SUM
SRL WK,16
SLL WK,2
L WK,0(IL4,WK) F(S(I)MOD511)
NOSC2 M WKE,0(IL1,0) -FUNCTION*AMPLITUDE
SLDA WKE,1
ST WKE,0(IL3,J3) -I1(I)*F(S(I)MOD511)
NOSC3 ST SUM,0(IL5,0)
BXLE J3,IDX,NOSCLOOP
B RETURN
*
************** ADD TWO BOX ********************IF(CODE.NE.-22.)GO TO 236
L=INP(JD+1)
DO 836 KL=1,10
836 IF(L.EQ.IDAT(KL))GO TO 236
INP(JD)=1
GO TO 236
C CHANGES DOTTED RHYTHMS TO '1'S.
736 IF(JF.NE.ISTAR)GO TO 236
IAMP=-1
INP(JD)=ISEMI
236 CONTINUE
CALL EXIT
C IF ERROR - THEN EXIT.
102 NX=INP(ML)
IZ=ML
ML=ML+1
ISUB=13
IF(NX.EQ.IBLA)GO TO 102
JA=-1
IF(NX.EQ.IPP)GO TO 1899
IF(NX.EQ.IE)GO TO 2308
IF(NX.EQ.IR)GO TO 4337
IF(NX.EQ.ID)GO TO 7720
IF(NX.EQ.II)GO TO 1899
CALL EXIT
13 LPAR=VX1
IF(NX.NE.II)GO TO 136
INUM(LK)=LPAR
GO TO 1299
136 IAMP=0
IF(IALL.LT.0)ALL(LK,LPAR)=0
CVT=0
IF(LPAR.EQ.2)CVT=1.
IF(LPAR.GT.NP(LK). RAN,I1,I2,O,S,T1,T2
* EQUATION: O(I)=I1(I)*R1(I2(I))
*
L SUM,0(IL4)
L RN1,0(IL5)
L RN3,0(IL6)
MVC RANE1+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC RANE2+2(1),L2 -I2 INDEXED OR NON-INDEXED
RANLOOP DS 0H
CR SUM,R511
BL X320 -BR IF NO NEW NUMBER
X319 SR SUM,R511
CR SUM,R511
BNL X319
L WK,28(I)
M WKE,=X'5EECE66D'
LPR WK,WK
ST WK,28(I) -I(7)=IABS(I(7)*IMULT)
S WK,=X'40000000' SUBTRACT 1/2
SRA WK,1
LR RN2,WK
SR RN2,RN3
LR RN1,RN3
LR RN3,WK
B X321
X320 LR RN2,RN3
SR RN2,RN1
X321 LR WK,RN2
MR WKE,SUM
DR WKE,R511
AR WK,RN1
RANE1 M WKE,0(IL1,0)
SLDA WKE,3
ST WKE,0(IL3,J3)
RANE2 A SUM,0(IL2,0)
BXLE J3,IDX,RANLOOP
*
LM 1,3,L4
ST SUM,0(1) -I(L4)=SUM
ST RN1,0(2) -I(L5)=RN1
ST RN3,0(3) -I(L6)=RN3
B RETURN
*
************** ENVELOPE GENERATOR *************************************
*
ENV DS 0H
*
* ENV CODE: ENV,I1,F,O,I2,I3,I4,S
* EQUATION: O(I)=I1(I)*F
*
*
L SUME,0(IL7,0)
MVC ENVE1+2(1),L4 -PARTITION 1
MVC ENVE2+2(1),L5 -PARTITION 2
MVC ENVE3+2(1),L6 -PARTITION 3
MVC ENVE4+2(1),L1
ENVLOOP DS 0H
CR SUME,R511
BL ENVA
SR SUME,R511
*
ENVA C SUME,=X'00800000' -TEST FOR FIRST PARTITION
* (0-128 IN LEFT-HALFWORD)
BH ENVB
ENVE1 A SUME,0(IL4,0)
B ENVC
*
ENVB C SUME,=X'01000000' -TEST FOR SECOND PARTITION
* (129-256 IN LEFT-HALFWORD)
BH ENVE3
ENVE2 A SUME,0(IL5,0)
B ENVC
*
ENVE3 A SUME,0(IL6,0) -THIRD PARITION
*
ENVC LR WK,SUME
SRL WK,16
SLL WK,2
L WK,0(IL2,WK)
ENVE4 M WKE,0(IL1,0)
SLDA WKE,1
ST WKE,0(IL3,J3)
BXLE J3,IDX,ENVLOOP
ST SUME,0(IL7,0)
B RETURN
*
************** STEREO OUTPUT BOX **************************************
*
STER DS 0H
*
* STR CODE: STR,I1,I2,O
* EQUATION:
* O(2I)=I1(I)
* O(2I+1)=I2(I)
SLL NSAM,1 -FOR STEREO
LA IDX,8
MVC STER1+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC STER2+2(1),L2 -I2 INDEXED OR NON-INDEXED
STERLOOP DS 0H
STER1 L WK,0(IL1,0)
A WK,0(IL3,J3)
ST WK,0(IL3,J3)
STER2 L WK,0(IL2,0)
A WK,4(IL3,J3)
ST WK,4(IL3,J3)
BXLE J3,IDX,STERLOOP
B RETURN
*
************** ADD THREE BOX ******************************************
*
AD3 DS 0H
*
* AD3 CODE I1,I2,I3,O
* EQUATIONS:
* O(I)=I1(I)+I2(I)+I3(I)
* SCALING:
* I1,I2,I3,O-16 PLACES
*
MVC AD3E1+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC AD3E2+2(1),L2 -I2 INDEXED OR NON-INDEXED
MVC AD3E3+2(1),L3 -I3 INDEXED OR NON-INDEXED
AD3LOOP DS 0H
AD3E1 L WK,0(IL1,0)
AD3E2 A WK,0(IL2,0)
AD3E3 A WK,0(IL3,0)
ST WK,0(IL4,J3)
BXLE J3,IDX,AD3LOOP
B RETURN
*
************** ADD FOUR BOX *******************************************
*
AD4 DS 0H
*
* AD4 CODE I1,I2,I3,I4,O
* EQUATIONS:
* O(I)=I1(I)+I2(I)+I3(I)+I4(I)
* SCALING:
* I1,I2,I3,I4,O-16 PLACES
*
MVC AD4E1+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC AD4E2+2(1),L2 -I2 INDEXED OR NON-INDEXED
MVC AD4E3+2(1),L3 -I3 INDEXED OR NON-INDEXED
MVC AD4E4+2(1),L4 -I4 INDEXED OR NON-INDEXED
AD4LOOP DS 0H
AD4E1 L WK,0(IL1,0)
AD4E2 A WK,0(IL2,0)
AD4E3 A WK,0(IL3,0)
AD4E4 A WK,0(IL4,0)
ST WK,0(IL5,J3)
BXLE J3,IDX,AD4LOOP
B RETURN
*
************** MULTIPLIER BOX *****************************************
*
MLT DS 0H
*
* MLT CODE I1,I2,O
* EQUATIONS:
* O(I)=I1(I)*I2(I)
* SCALING:
* I1,I2,O-16 PLACES
*
MVC MLTE1+2(1),L1 -I1 INDEXED OR NON-INDEXED
MVC MLTE2+2(1),L2 -I2 INDEXED OR NON-INDEXED
MLTLOOP DS 0H
MLTE1 L WK,0(IL1,0)
MLTE2 M WKE,0(IL2,0)
SRDA WKE,16
ST WK,0(IL3,J3)
BXLE J3,IDX,MLTLOOP
B RETURN
*
************** SET NEW FUNCTION IN OSC OR ENV *************************
*
FLT DS 0H
*
B RETURN
*
************** RANDOM AND HOLD GENERATOR ******************************
*
RAH DS 0H
*
* RAH CODE: RAH,I1,I2,O,S,T
* EQUATION: O(I)=I1(I)*RN(I2(I))
*
L SUM,0(IL4,0)
L RN,0(IL5,0)
MVC RAHE1+2(1),L1
MVC RAHE2+2(1),L2
RAHLOOP DS 0H
LR WK,RN
CR SUM,R511
BL RAHE1
RAHA SR SUM,R511
CR SUM,R511
BNL RAHA
*
L WK,28(I,0)-I(7)=ABS(I(7)*IMULT)
M WKE,=X'5EECE66D'
LPR WK,WK
ST WK,28(I,0)
*
S WK,=X'40000000'
LR RN,WK
*
RAHE1 M WKE,0(IL1,0) -I(IL1,0)*RN
SLDA WKE,2
ST WKE,0(IL3,J3)
*
RAHE2 A SUM,0(IL2,0)
BXLE J3,IDX,RAHLOOP
*
ST SUM,0(IL4,0)
ST RN,0(IL5,0)
*
B RETURN
*
***********************************************************************
INTAB DS 0F
L1 DC F'0'
L2 DC F'0'
L3 DC F'0'
L4 DC F'0'
L5 DC F'0'
L6 DC F'0'
L7 DC F'0'
L8 DC F'0'
L9 DC F'0'
*
*
LTORG
*
END
****** FOLLOWING IS RANDOM NON-UPDATED JCL FOR IBM360 ******
//MUSLKED JOB (E404,429,1,3),LCSMITH,
//STEP0 EXEC PGM=IEFBR14
//DD DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,DISP=(OLD,DELETE),UNIT=2314
/*
//PASS1 EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//SYSLMOD DD DSNAME=E404.MUSIC5(PASS1),VOLUME=SER=SYS09, X
// UNIT=2314, X
// SPACE=(TRK,(40,5,2),RLSE),DISP=(NEW,KEEP)
//SYSLIN DD DSNAME=E404.PASS1OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//PASS2 EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//LKED.SYSLMOD DD DSNAME=E404.MUSIC5(PASS2),VOLUME=SER=SYS09, X
// UNIT=2314,DISP=(OLD,KEEP), X
// SPACE=(TRK,(40,5,2),RLSE)
//SYSLIN DD DSNAME=E404.PASS2OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//NOTAPE EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//SYSLMOD DD DSNAME=E404.MUSIC5(NOTAPE),VOLUME=SER=SYS09, X
// UNIT=2314,DISP=(OLD,KEEP), X
// SPACE=(TRK,(40,5,2),RLSE)
//SYSLIN DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//PASS3 EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//SYSLMOD DD DSNAME=E404.MUSIC5(PASS3),VOLUME=SER=SYS09,X
// UNIT=2314,DISP=OLD
//SYSLIN DD DSNAME=E404.SAMOUT,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=OLD
// DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//MUSLKED JOB (Y077MUS,427,1,3),DO ROTHY,MSGLEVEL=1
//DELETE EXEC PGM=IEHPROGM
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD VOLUME=SER=SYS09,DISP=OLD,UNIT=2314
//SYSIN DD *
SCRATCH DSNAME=E404.MUSIC5A,VOL=2314=SYS09
/*
//PASS3 EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//SYSLMOD DD DSNAME=E404.MUSIC5A(PASS3),VOLUME=SER=SYS09, X
// UNIT=2314,DISP=(NEW,KEEP),SPACE=(TRK,(10,2,1))
//SYSLIN DD DSNAME=E404.SAMOUT,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=OLD
// DD DSNAME=E404.SAMGEN,VOLUME=SER=SYS09,DISP=OLD, X
// UNIT=2314
// DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//PASS3 EXEC PGM=IEWL,PARM='LET,LIST,MAP'
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)
//SYSPRINT DD SYSOUT=A
//SYSLMOD DD DSNAME=E404.MUSIC5A(NOTAPE),VOLUME=SER=SYS09, X
// UNIT=2314,DISP=(OLD,KEEP)
//SYSLIN DD DSNAME=E404.SAMGEN,VOLUME=SER=SYS09,DISP=OLD, X
// UNIT=2314
// DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314, X
// DISP=OLD
/*
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC PGM=PASS1
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
COMMENT:TEST SCORE TO CHECK MUSIC V PROGRAMS AND UNIT GENERATORS;
COMMENT:USE DUMMY CONVT PROVIDED WITH PASS 2 AND DEBUG SAMOUT;
COMMENT:INSTRUMENT DEFINITIONS;
COMMENT:OUTPUT BOX;INS 0 1;OUT P5 B1;END;
COMMENT:OSCILLATOR;INS 0 2;OSC P5 P6 B2 F1 P30;OUT B2 B1;END;
COMMENT:ADD TWO GENERATOR;INS 0 3;AD2 P5 P6 B2;OUT B2 B1;END;
COMMENT:RANDOM GENERATOR;INS 0 4;RAN P5 P6 B2 P7 P30 P29;OUT B2 B1;END;
COMMENT:ENVELOPE;INS 0 5;ENV P5 F2 B2 P6 P7 P8 P30;OUT B2 B1;END;
COMMENT:STEREO OUTPUT BOX;INS 0 6;STR V1 V2 B1;END;
COMMENT:ADD THREE GENERATOR;INS 0 7;AD3 P5 P6 P7 B2;OUT B2 B1;END;
COMMENT:ADD FOUR GENERATOR;INS 0 8;AD4 P5 P6 P7 P8 B2;OUT B2 B1;END;
COMMENT:MULTIPLIER;INS 0 9;MLT P5 P6 B2;OUT B2 B1;END;
COMMENT:DUMMY INST , FILTER OMITTED;INS 0 10;OUT P5 B1;END;
COMMENT:RANj_ND HOLD;INS 0 11;RAH P5 P6 B2 P7 P30;OUT B2 B1;END;
COMMENT:SETTING INTEGERS AND VARIABLES;
COMMENT:SAMPLING RATE 1000 HZ;SIA 0 4 1000;
COMMENT:STEREO BOX INPUTS;SV3 0 1 500 999;
COMMENT:FUNCTION DEFINITIONS;
GEN 0 3 1 0 10 10 10 10 0 -10 -10 -10 -10 0;
GEN 0 1 2 0 0 .990 127 .990 255 0 383 0 511;
GEN 0 2 3 1 1;
COMMENT:NOTE CARDS;
NOT 0.005 2 .03 1000 51.1;
NOT .04 3 .005 657 343;
NOT 0 1 .003 777;
NOT .05 4 .03 1000 128 512;
NOT .09 5 .032 1000 16 8 16;
COMMENT:TO SET MONO;SI3 .16 8 0;
NOT .13 5 .010 1000 32 64 32;
COMMENT:TO SET STEREO;SI3 .14 8 1;
NOT .15 6 .005;
NOT .16 7 .005 600 200 301;
NOT .18 9 .005 50 20;
NOT .17 8 .005 600 150 60 301;
NOT .22 11 .03 1000 128;
TER .26;
/*
//PASS2 EXEC PGM=PASS2
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
/*
//PASS3 EXEC PGM=NOTAPE
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
/*
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC PGM=PASS1
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
/*
//PASS2 EXEC PGM=PASS2
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
/*
//PASS3 EXEC PGM=PASS3
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP), X
// VOLUME=SER=SAMPLE,DSNAME=TAPE, X
// DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)
/*
/*RUN IDLE
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1
//JOBLIB DD DSNAME=E404.MUSIC5A,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
// DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC PGM=PASS1
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
/*
//PASS2 EXEC FORTHCLG
//FORT.SYSIN DD *
/*
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD
//LKED.SYSIN DD *
INCLUDE PASS2(PASS2)
ENTRY MAIN
/*
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//PASS3 EXEC PGM=PASS3
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP), X
// VOLUME=SER=SAMPLE,DSNAME=TAPE, X
// DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)
/*
//MUSEXEC JOB (Y077MUS,429,2,3,,,,T),'YOUR NAME',MSGLEVEL=1
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC FORTHCLG
//FORT.SYSIN DD *
/*
//LKED.PASS1 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD
//LKED.SYSIN DD *
INCLUDE PASS1(PASS1)
ENTRY MAIN
/*
//GO.FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//GO.FT05F001 DD DDNAME=SYSIN
//GO.FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
/*
//PASS2 EXEC FORTHCLG
//FORT.SYSIN DD *
/*
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD
//LKED.SYSIN DD *
INCLUDE PASS2(PASS2)
ENTRY MAIN
/*
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//PASS3 EXEC PGM=PASS3
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP), X
// VOLUME=SER=SAMPLE,DSNAME=TAPE, X
// DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)
/*
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1
//JOBLIB DD DSNAME=E404.MUSIC5A,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
// DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC PGM=PASS1
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
/*
//PASS2 EXEC PGM=PASS2
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
/*
//PASS3 EXEC PGM=PASS3
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP), X
// VOLUME=SER=SAMPLE,DSNAME=TAPE, X
// DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)
/*
//MUSEXEC JOB (E404,429,1,5),LCSMITH
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314, X
// DISP=(OLD,PASS)
//PASS1 EXEC PGM=PASS1
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03, X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//FT05F001 DD DDNAME=SYSIN
//FT06F001 DD SYSOUT=A
//GO.SYSIN DD *
INS 0 1;
OSC P5,P6,B2,F1,P30;
OSC B2,P7,B2,F2,P29;
OUT B2,B1;
END;
GEN 0,2,2,1,1;
GEN 0,1,1,0,0,.99,20,.99,491,0,511;
SIA 0,4,10000;
NOT 0,1,.4,60,2700;
NOT .2,1,1,40,2800;
NOT 1.3,1,.25,60,101;
NOT 1.5,1,.1,20,440;
NOT 3,1,4,10,230;
TER 7;
/*
//PASS2 EXEC FORTHCLG
//FORT.SYSIN DD *
SUBROUTINE CONVT
COMMON IP,P,G
DIMENSION IP(10),P(100),G(1000)
IF(P(1)-1.0)102,100,102
100 IF(P(3)-1.0)102,101,102
101 P(5)=10.0**(P(5)/20.0)
P(7)=511.0*P(6)/G(4)
P(6)=511.0/(P(4)*G(4))
IP(1)=7
102 RETURN
END
/*
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD
//LKED.SYSIN DD *
INCLUDE PASS2(PASS2)
ENTRY MAIN
/*
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
// SPACE=(TRK,(10,2),RLSE),UNIT=2314, X
// DCB=(RECFM=V,LRECL=796,BLKSIZE=800)
//PASS3 EXEC PGM=NOTAPE
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03, X
// UNIT=2314
//GO.FT06F001 DD SYSOUT=A
//GO.SYSUDUMP DD SYSOUT=A
/*